import java.util.Scanner;

/**
 * Created by forcht on 2018/4/22.
 */
public class Main {

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int[] a=new int[n];
        int[] b=new int[n];
        int[] c=new int[n];
        //为了后面查找根结点
        for(int i=0;i<n;i++){
            a[i]=n;
            b[i]=0;
        }
        int parent;
        int child;
        //输入数据
        for(int i=0;i<n-1;i++){
            parent=scanner.nextInt();
            child=scanner.nextInt();
            //输入可能不是二叉树，只保留两个子节点
            if(c[parent]<2){
                a[child]=parent;
                c[parent]++;
            }else {
                c[child]=3;
            }
        }
        //找出根结点
        int root=0;
        for(int i=0;i<n-1;i++) {
            if (a[i] == n&&c[i]!=3) {
                root = i;
                break;
            }
        }
        //计算出每个节点的深度
        for(int i=0;i<n;i++){
            if(c[i]!=3){
                b[i]=path(a,b,i,root);
            }
        }
        int max=0;
        for(int i=0;i<n;i++){
           if(b[i]>max){
               max=b[i];
           }
        }
        System.out.println(max);
    }
    static int path(int[] a,int[] b,int child,int root){
        if(child!=root){
           if(b[child]>0){
               return b[child];
           }else {
               b[child]=path(a,b,a[child],root)+1;
               return b[child];
           }
        }
        return 1;
    }

}
